<?php

class usuario extends genclas
{
	function __construct($cod=0)
	{
		parent::__construct("usuarios",$cod);
	}
	
	function __toString(){
		
		return $this->nombre;
	}
	
	function setClave($clave)
	{
		$this->clave = md5($clave);
		$this->guardar();
		
	}
}

/**
 * Clase para el manejo de los comprobantes
 */
class cls_comprobante extends genclas{
	/**
	 * Para cargar el proximo comprobante de un tipo especificado
	 * @return string
	 * @var String $t Tipo de comprobante $t
	 */ 
	public static function getProximoComprobante($t='fac_normal'){
		
		$tipo = new cls_comprobante(0);
		$sql = "select id from comprobantes where codigo = '{$t}'";
		$rs = asgMng::query($sql);
		if(mysqli_num_rows($rs) > 0){
			$row = mysqli_fetch_row($rs);
			$id = $row[0];
			$tipo->id = $id;
			$tipo->cargar();
			$tipo->sec_inicial++;
			$tipo->guardar();
			return $tipo->sec_inicial;
		}
		return "N/A";
	}
	
	function __construct($cod)
	{
		parent::__construct("comprobantes",$cod);
	}
}

class cls_pago extends genclas{
	public $CLSestudiante;
	public $nombreCajero;	
	function __construct($cod=0)
	{
		$this->CLSestudiante = null;
		$this->nombreCajero = '';
		parent::__construct("pagos",$cod);
	}
	
	function cargar()
	{
		parent::cargar();
		
		if($this->id > 0)
		{
			$this->CLSestudiante = new estudiante($this->estudiante);
		}
		$sql = "select * from usuarios where usuario = '{$this->cajero}'";
		$rs = asgMng::query($sql);
		if(mysqli_num_rows($rs) > 0){
			$r = mysqli_fetch_assoc($rs);
			$this->nombreCajero = $r['nombre'];
		}
	}
	
	function __toString(){
		return 'cls_pago';
	}
	
	
	
}

class sesion extends genclas{
	
	public function __construct($id=0){
		
		parent::__construct('sesion');
		
		if($id > 0){
			$this->id = $id;
			$this->cargar();
		}
		
	}
	
	public static function optenerPeriodo($idSesion){
		$sesion = new sesion($idSesion);
		return $sesion->periodo;
		
	}
	
}

class estudiante extends genclas
{
	
	public $sesion;
	public $cuota;
	public $pagoInfo;
	
	public $curso;
	
	public $nombreCompleto;
	
	function __construct($cod=0)
	{
		parent::__construct("estudiante",$cod);
	}
	
	function cargarPago($cod)
	{
		$sql = "SELECT *, DATE_FORMAT  (fecha , '%d/%m/%Y')AS fecha   FROM pagos where id = '{$cod}'";
		
		$rs = asgMng::query($sql);
		
		if(mysqli_num_rows($rs) > 0)
		{
				
			$row = mysqli_fetch_array($rs);
			
			$this->id = $row['estudiante'];
			
			$this->pagoInfo = $row;
			$this->cargar();
		}
		
		/*$sql = "SELECT c.nombre FROM sesionestudiantes se
LEFT JOIN sesion s ON s.id=se.sesion
LEFT JOIN cursos c ON c.id = s.curso
WHERE se.estudiante = '{$this->id}'";*/ 
		$sql = "SELECT se.nombre AS nombre FROM sesionestudiantes se
LEFT JOIN sesion s ON s.id=se.sesion
LEFT JOIN cursos c ON c.id = s.curso
WHERE se.estudiante = '{$this->id}'"; 
			
			$dt=new dataTable($sql);
			
		$this->curso = $dt->data['nombre'][0];
		/*echo ($this->curso);*/
	}

	function registrarInscripcion($seccion, $monto, $descuento=0)
	{
		
		$periodoDelLaSesion = sesion::optenerPeriodo($seccion);
		$monto= $monto-$descuento;
		
		$i = new genclas('sesionestudiantes');
		$i->id = 0;
		$i->sesion = $seccion;
		$i->estudiante = $this->id;
		$i->numero = '';
		$i->inscripcion = $monto;
		$i->fecha = null;
		$i->periodo = $periodoDelLaSesion;
		$i->cajero = getUser(); 
		$i->guardar();
		
		$pagoid = 0;	
		$resultado = true;
		
		if(mysqli_error(asgMng::getCon()) || $i->id == 0)
		{
			$resultado = false;
		}
		else{
			//$pagoid = $this->registrarPago(0, $monto, "Registro de inscripcion.",0);
			$setemp = new genclas('sesion',$seccion);
			
			
			$sql = "UPDATE estudiante SET inscrito=1, curso='{$setemp->curso}' WHERE id = '{$this->id}'";
			
			asgMng::query($sql);
			unset($setemp);
			$this->cargar();
			
			$sql = "SELECT * FROM meses WHERE cobrable > 0 ORDER BY ordenCobro";
			$rs = new dataTable($sql);
			
			$mes = $rs->getRow(0);
			$mes = $mes['id'];			
			$periodo = $periodoDelLaSesion;
			$periodo = explode("-",$periodo);
			$periodo=$periodo[0];
			$dia = PAGO_DIA_CORTE;
			
			$ed = new genclas('estudiante_deuda');
			$ed->id = 0;
			$ed->periodo = $periodoDelLaSesion;
			$ed->estudiante = $this->id;
			$ed->mes = 0;
			$ed->descripcion = "Registro de inscripcion ".$periodoDelLaSesion;
			$ed->monto = $monto;
			$ed->mora = 0;
			$ed->pagado = 0;
			$ed->recargoAplicado = 0;
			$ed->corte=$periodo.'-'.PAGO_MES_INICIO.'-'.PAGO_DIA_CORTE;
			$ed->guardar();
			$pagoid = $ed->id;
			
			$fecha = strtotime("{$periodo}-{$mes}-{$dia}");
			$fecha = strtotime("+1 month",$fecha);
			$this->cuota = $this->cargarCuota($periodoDelLaSesion);
			
			//echo "{$periodo}-{$mes}={$dia}";
			for($x=0; $x < $rs->numRows; $x++){
				$row = $rs->getRow($x);
				$ed->id = 0;
				$ed->periodo = $periodoDelLaSesion;
				$ed->estudiante = $this->id;
				$ed->mes = $row['id'];
				$ed->descripcion = "Mesualidad {$row['nombre']} ($periodoDelLaSesion)";
				$ed->monto = $this->cuota;
				$ed->mora = 0;
				$ed->pagado = 0;
				$ed->recargoAplicado = 0;
				$ed->corte=date("Y-m-d",$fecha);
				$ed->guardar();
				$fecha = strtotime("+1 month",$fecha);
			}
			
		}
		
		$data = array("resultado"=>$resultado,"pagoid"=>$pagoid);
		
		return $data;
		
	
	}
			
	
	
	function cargar()
	{
		parent::cargar();
		$this->nombreCompleto = ucwords(strtolower($this->nombre)).' '.ucwords(strtolower($this->apellido));
		
		$sql = "SELECT sesion FROM sesionestudiantes WHERE estudiante = {$this->id} AND periodo='".PERIODO."'";
		
		//Para cargar la sesion.
		$this->sesion = 0;
		$rs = asgMng::query($sql);	
		if(mysqli_num_rows($rs) > 0)
		{
			$row = mysqli_fetch_array($rs);
			$this->sesion =	$row[0];
		}			
	
		
		//Para cargar lo que paga el curso.
		if($this->sesion > 0)
		{
			$sql = "SELECT s.id, s.curso, c.cuota FROM sesion s 
			LEFT JOIN cursos c ON c.id = s.curso 
			WHERE s.curso={$this->sesion}";
			$rs = asgMng::query($sql);
			$row = mysqli_fetch_array($rs);
			$this->cuota = $row['cuota'];
			
		}
			
	}
	
	function cargarCuota($periodo){
		
		
		
		$sql = "SELECT c.cuota FROM sesionestudiantes se 
			
			LEFT JOIN `sesion` s ON se.sesion = s.id
			LEFT JOIN cursos c ON c.id = s.curso
			
WHERE se.estudiante = '{$this->id}' AND s.periodo = '{$periodo}'";
			
			$rs = asgMng::query($sql);
			$row = mysqli_fetch_array($rs);
			$this->cuota = $row['cuota'];
			return 	$row['cuota'];
	}
	
	
	/**
	 * Registra el pago de un estudiante
	 * @return int El id del estudiante
	 */
	function registrarPago($mes, $valor, $tipo="",$deudaid, $observacion='')
	{
	
		if(strlen($tipo) < 1)
		{ $tipo = "Pago del mes {$mes}"; }
		
		$fecha = date('Y-m-d h:i:s', time());
		$pago = new genclas("pagos");
		$pago->id = 0;
		$pago->deudaid=$deudaid;
		$pago->caja_sesion = getCajaSesion();
		$pago->sesionEstudiante = $this->sesion;
		$pago->estudiante = $this->id;
		$pago->mes = $mes;
		$pago->actividad = 0;
		$pago->valor = $valor;
		$pago->periodo = PERIODO;
		$pago->fecha = $fecha;
		$pago->cerrado = 0;
		$pago->observacion = $observacion;
		$pago->concepto = $tipo;
		$pago->cajero = getUser();
		$pago->ncf = cls_comprobante::getProximoComprobante();
		$pago->guardar();
		return $pago->id;
		
	}
	
}